package cc.stonemarket.caricature.model;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

import cc.stonemarket.caricature.util.XmlParentUtil;
  
public class BookXmlUtil extends XmlParentUtil<Book> {
	
	@Override
	protected Book startTag(XmlPullParser pullParser, Book object) throws Exception {
        if ("book".equals(pullParser.getName())) {   // 标签为book的时候，取出标签的属性id值，并保存到Book对象里   
        	object = new Book();
        	object.setId( Long.parseLong( pullParser.getAttributeValue(0) ) );
        }  else if (object != null) {
            if ("name".equals(pullParser.getName())) {	// 当标签为name时，取出标签体里面的文本值，并保存到Book对象里  
            	object.setName( pullParser.nextText() );   
            }
            if ("cover".equals(pullParser.getName())) {	// 当标签为age时，取出标签体里面的文本值，并保存到Book对象里   
            	object.setCover( pullParser.nextText() );   
            }
        }
		return object;
	}
	
	@Override
	protected List<Book> endTag(XmlPullParser pullParser, Book object,List<Book> result) {
        if ("book".equals(pullParser.getName())) {	// 如果结束标签名是book，那么将Book对象保存到bookList中   
            if (object != null && result != null) {
            	result.add(object);
            	object = null;
            }
        }
		return result;
	}

	@Override
	protected void writeToFile(XmlSerializer writer, List<Book> objects) throws Exception {
		writer.startTag("", "books");   							// 创建根元素books 
        if (objects != null) {
            for (Book book : objects) {								// 变量数据集合
            	
            	writer.startTag("", "book");   						// 创建book标签
            	writer.attribute("", "id", book.getId() + "");  	// 给book标签加上id属性，值为遍历出来的Book对象的id值  
                
            	writer.startTag("", "name");  						// 创建name标签  
            	writer.text(book.getName());   						// 给name标签加上文本元素，值为遍历出来的Book对象的name值   
            	writer.endTag("", "name");   						// 结束name标签
                
            	writer.startTag("", "cover");   					// 创建age标签 
            	writer.text(book.getCover() + "");					// 给age标签加上文本元素，值为遍历出来的Book对象的age值   
            	writer.endTag("", "cover");   						// 结束age标签
                
            	writer.endTag("", "book");   						// 结束book标签   
            }
        }
        writer.endTag("", "books");	// 结束books标签
	}
  
}  








